The present invention relates to a system and method for providing a stateful computer application to a multitude of users, as well as a computer program product.
Certain computer applications, such as SAP® ABAP™ applications, are “stateful” applications in which a state of a user session is maintained as a collection of user-specific session variables in main memory of the application server. The set of user-specific session variables may even be unique to the specific session. Stateful applications are efficient and provide excellent performance when there are a known, or at least predictable, number of concurrent users allowing appropriate HW sizing. In those situations, stateful applications handle in particular very high frequent requests of relatively short duration which might even operate on very large sessions with great efficiency. However, in environments such as cloud computing and software-as-a-service, where the number of concurrent users can range from a few to many, and is typically an unknown quantity, stateful applications may not provide the same efficiency and may lack performance due to the memory constraints. Also, the user sessions in cloud computing and software-as-a-service provided activities may typically experience rather infrequent requests (i.e. long think times), so the user session reserves unutilized computing resources for a longer period of time, which can contribute to the congestion and inefficient use of computing and memory resources.
Computer applications that are “stateless” are better suited for use in the cloud computing and software-as-a-service environment. A stateless application is a computer application that does not allocate dedicated main memory of the application server for maintaining the state of a user session (in between user requests), but rather uses external storage, such as a database, to maintain the state of a user session in a persistent memory. It would be beneficial if stateful applications could be transformed into stateless applications to take advantage of a “cloud computing” environment.